package ui;

import java.util.Vector;

import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;

import util.FuncionesUtiles;
import dominio.Cotizacion;

@SuppressWarnings("serial")
public class CotizacionModel extends AbstractTableModel {
  
	Vector<Cotizacion> cotizaciones;
    String columnas[] = {"C\u00f3digo", "Rubro - Marca", "Detalle", "Medidas", "Bocas", "Precio", "Cantidad", "Subtotal", "Acci\u00f3n"};
    Vector<TableModelListener> cosas;
    
    public CotizacionModel(Vector<Cotizacion> cotizaciones) {
    	this.cotizaciones = cotizaciones;
		cosas = new Vector<TableModelListener>();
    }
    
    public void cambiarLista(Vector<Cotizacion> cotizaciones) {
    	this.cotizaciones = cotizaciones;
    }
    
    public int getRowCount() {
    	return cotizaciones.size();
    }

    public int getColumnCount() {
    	return columnas.length;
    }

    public String getColumnName(int columnIndex) {
    	return columnas[columnIndex];
    }

    public Class<?> getColumnClass(int columnIndex) {
    	return String.class;
    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {
    	if(columnIndex == 6)
    		return true;
    	return false;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {

		switch (columnIndex) {
			case 0: return cotizaciones.elementAt(rowIndex).getCodigo();
			case 1: return cotizaciones.elementAt(rowIndex).getRubro_marca();
			case 2: return cotizaciones.elementAt(rowIndex).getDetalle();
			case 3: return cotizaciones.elementAt(rowIndex).getMedidas();
			case 4: return cotizaciones.elementAt(rowIndex).getBocas();
			case 5: return cotizaciones.elementAt(rowIndex).getPrecio_listaFormateado();
			case 6: return cotizaciones.elementAt(rowIndex).getCantidad().toString();
			case 7: return cotizaciones.elementAt(rowIndex).getSubtotalFormateado();
			case 8: return "QUITAR";
		}
		
		return "";
	}

    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
    	
		if(columnIndex == 6 && !aValue.toString().isEmpty() && 
				FuncionesUtiles.StringIsDouble(aValue.toString())) {
			Cotizacion actual = cotizaciones.elementAt(rowIndex);
			Integer cantidad = Integer.parseInt((String) aValue);
			actual.setCantidad(cantidad);
			
			fireTableCellUpdated(rowIndex, columnIndex + 1);
		}
    }
    
}
